var app = require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);

app.get('../client/index.html',function (req,res) {
    res.send('<h1>welcome</h1>');
})
//在线用户
var onlineUser={};
var onlineUserAll = {};
var onlineCount=0;

io.on('connection',function (socket) {
    console.log('新用户登录');

    //监听新用户加入
    socket.on('login',function (obj) {
        socket.name=obj.userid;
        //检查用户在线列表
        if(!onlineUser.hasOwnProperty(obj.userid)){
            onlineUser[obj.userid]=obj.username;
            onlineUserAll[obj.userid] = obj;
            //在线人数+1
            onlineCount++;
        }
        //广播消息
        io.emit('login',{onlineUser:onlineUser,onlineCount:onlineCount,user:obj,all:onlineUserAll});
        console.log(obj.username+"加入了聊天室");
    })

    //监听用户退出
    socket.on('disconnect',function () {
        //将退出用户在在线列表删除
        if(onlineUser.hasOwnProperty(socket.name)){
            //退出用户信息
            console.log(socket.name)
            var obj={userid:socket.name, username:onlineUser[socket.name]};
            //删除
            delete onlineUser[socket.name];
            delete onlineUserAll[socket.name];
            //在线人数-1
            onlineCount--;
            //广播消息
            io.emit('logout',{onlineUser:onlineUser,onlineCount:onlineCount,user:obj});
            console.log(obj.username+"退出了聊天室");
        }
    })

    //监听用户移动位置
    socket.on('move', function(obj){
        //向所有客户端广播移动位置
        if(onlineUserAll.hasOwnProperty(obj.userid)){
            onlineUserAll[obj.userid] = obj;
        }
        io.emit('move', obj);
        // console.log(obj.username+'说：'+obj.content);
    });

    //监听用户发布聊天内容
    socket.on('message', function(obj){
        //向所有客户端广播发布的消息
        io.emit('message', obj);
        console.log(obj.username+'说：'+obj.content);
    });

    // 向所有对象广播 message
    // socket.emit('message', {username:"系统", content:"welcome"});
})
http.listen(4000, function(){
    console.log('listening on *:4000');
});